/*
 * DefaultCategoryDataset.cpp
 *
 *  Created on: 27/07/2011
 *      Author: godinho
 */

#include "DefaultCategoryDataset.h"
#include <qstring.h>

DefaultCategoryDataset::DefaultCategoryDataset() : mLastAdded(0){

}

DefaultCategoryDataset::~DefaultCategoryDataset() {
}

int DefaultCategoryDataset::getSerieCount() {
	return mSeries.size();
}

void DefaultCategoryDataset::addValue(float x, float y, QString serie) {

	if(!mLastAdded || mLastAdded->getName() != serie) {
		mLastAdded = (DefaultSerie*) this->getSerie(serie);
	}

	if(!mLastAdded) {
		mLastAdded = new DefaultSerie(serie);
		mSeries.push_back(mLastAdded);
	}

	mLastAdded->addValue(x, y);

}

Serie* DefaultCategoryDataset::getSerie(int index) {
	return mSeries[index];
}

Serie* DefaultCategoryDataset::getSerie(QString name) {
	QVector<DefaultSerie*>::Iterator it = mSeries.begin();
	for(; it != mSeries.end(); it++) {
		if((*it)->getName() == name) {
			return *it;
		}
	}

	return 0;
}

DefaultSerie::DefaultSerie(QString name) : mName(name){
}

DefaultSerie::~DefaultSerie() {
}

QString DefaultSerie::getName() {
	return mName;
}

int DefaultSerie::valuesCount() {
	return mRows.size();
}

float DefaultSerie::getRow(int i) {
	return mRows[i];
}

float DefaultSerie::getCol(int i) {
	return mCols[i];
}

void DefaultSerie::addValue(float row, float col) {
	int i;
	for(i = 0; i < mCols.size(); i++) {
		if(mCols[i] > col) {
			break;
		}
	}

	mCols.insert(i, col);
	mRows.insert(i, row);
}
